env = Environment()
env["PROGSUFFIX"] = ".out"              # 可执行文件后缀.out
env["CCFLAGS"] = " -g3 -O0 -Wall"       # gdb 调试
env["CCFLAGS"] += " -std=c++20"         # c++20 需要gcc10以上版本
env["LIBS"] = ["pthread"]

env.Program('1_atomic_读写实例.cc')
env.Program("2_atomic_多线程写.cc")
env.Program("3_atomic_wait_notify实例.cc")
env.Program("21_mutex_互斥锁.cc")
env.Program("22_mutex_lock_guard_RAII作用域锁.cc")
env.Program("23_mutex_unique_lock_RAII作用域锁.cc")
env.Program("24_mutex_uniue_lock_两个锁实例.cc")
env.Program("25_mutex_scoped_lock_RAII作用域块锁.cc")
env.Program("51_binary_semaphore_二元信号量实例.cc")
env.Program("52_binary_semaphore_二元信号量_两个线程同步.cc")
env.Program("53_binary_semaphore_二元信号量_try_acquire_for等待超时_cmd指令模拟同步.cc")
env.Program("61_countint_semaphore_多元信号量_cmd指令模拟_单线程同步.cc")
env.Program("62_countint_semaphore_多元信号量_cmd指令模拟_多线程同步.cc")
env.Program("71_latch_阻塞.cc")
env.Program("71.1_latch_阻塞_单门闩.cc")
env.Program("81_barrier_屏障_阻塞到所有线程已完成.cc")
env.Program("85_barrier_障碍_复杂实例.cc")
env.Program("81.1_barrier_屏障_jthread_线程安全实例.cc")
env.Program("91_promise_允诺_异步返回int.cc")
env.Program("92_promise_允诺_异步返回string.cc")
env.Program("95_future_获取异步结果.cc")
env.Program("96_packaged_task_封装为异步函数.cc")
